package com.shiro.util;

import org.apache.shiro.crypto.hash.Md5Hash;

/**
 *
 * 加密类
 * @author hjwStart
 * @time 2022-11-21 11:41
 * @version: 1.0
 */
public class EncryptionUtils {

    private EncryptionUtils(){

    }

    /**
     * 采用MD5算法，对数据进行加密，返回加密后的十六进制字符串
     * @param source  明文（需要进行加密的字符串）
     * @return 暗文（经过加密的字符串）
     */
    public static String getEncryptionStr(String source){
        return new Md5Hash(source).toHex();
    }

    /**
     * 采用MD5算法 + 盐值，对数据进行加密，返回加密后的十六进制字符串
     * @param source  明文（需要进行加密的字符串）
     * @param saltValue 盐值
     * @return 暗文（经过加密的字符串）
     */
    public static String getEncryptionStr(String source,String saltValue){
        return new Md5Hash(source,saltValue).toHex();
    }

    /**
     * 采用MD5算法 + 盐值，对数据进行n次加密，返回加密后的十六进制字符串
     * @param source  明文（需要进行加密的字符串）
     * @param saltValue 盐值
     * @return 暗文（经过加密的字符串）
     */
    public static String getEncryptionStr(String source,String saltValue,int hashIterations){
        return new Md5Hash(source,saltValue,hashIterations).toHex();
    }

    public static void main(String[] args) {
        System.out.println(getEncryptionStr("123123"));
        System.out.println(getEncryptionStr("123123","salt"));
        System.out.println(getEncryptionStr("123123","salt",1024));
    }
}
